import json
from openai import OpenAI
import time

# 初始化 DeepSeek 客户端
client = OpenAI(
    api_key = "sk-430766cb68934151aaeae540823fea2f",  # 替换为你的 API key
    base_url="https://api.deepseek.com"
)

# 读取示例数据
few_shot_examples = [
    {
        "基本信息": {
            "姓名": "张三",
            "性别": "男",
            "年龄": "21",
            "电话": "16666666666",
            "邮箱": "16666666666@163.com",
            "籍贯": "广东省肇庆市"
        },
        "意向岗位": {
            "类型": "实习",
            "城市": "深圳",
            "职位": "全栈工程师",
            "行业": "制造业",
            "薪资": "1k-2k"
        },
        "教育经历": {
            "专业": "自动化",
            "学历": "本科"
        },
        "工作经历": "在软件园实习，参与了多个项目，包括一个基于Python的Web应用开发，一个基于React的移动端应用开发，一个基于Java的微服务架构设计。",
        "专业技能": "精通嵌入式程序编写和硬件设计，精通数电模电以及信号与系统的专业知识，熟悉C语言，multisim,MATLAB,Altium designer, labview和comsol,labview，和立创eda软件，非常熟悉stm32的使用，会使用PythonopenCV.",
        "项目经历": "参与了多个项目，包括一个基于Python的Web应用开发，一个基于React的移动端应用开发，一个基于Java的微服务架构设计。",
        "校内荣誉": "获得过优秀学生干部称号，获得过优秀学生奖学金。",
        "校内职务": "担任过班级班长和团支部书记。",
        "资格证书": "获得过全国大学生数学建模竞赛一等奖。",
        "个人作品": "个人作品：一个基于Python的Web应用开发，一个基于React的移动端应用开发，一个基于Java的微服务架构设计。"
    },
    {
        "基本信息": {
            "姓名": "李四",
            "性别": "男",
            "年龄": "21",
            "电话": "16666666666",
            "邮箱": "16666666666@163.com",
            "籍贯": "广东省肇庆市"
        },
        "意向岗位": {
            "类型": "实习",
            "城市": "深圳",
            "职位": "嵌入式软件开发",
            "行业": "信息传输、软件和信息技术服务业",
            "薪资": "4k-6k"
        },
        "教育经历": {
            "专业": "自动化",
            "学历": "本科"
        },
        "工作经历": "在公司实习，参与了多个项目，包括一个基于Python的Web应用开发，一个基于React的移动端应用开发，一个基于Java的微服务架构设计。",
        "专业技能": "编程:热练掌握C、C++、Python编程语言，熟悉汇编语言;嵌入式:热练STM32 单片机项目开发，包括使用CubeMX，Keil环境开发，FreeRTOS编程:熟悉SPI、I2C、USB、UART接口协议:熟悉机器视觉OpenCV:软件:熟练使用Matlab、Labview编程，熟悉COMSOL Multiphysics建模;",
        "项目经历": "参与了多个项目，包括一个基于Python的Web应用开发，一个基于React的移动端应用开发，一个基于Java的微服务架构设计。",
        "校内荣誉": "获得过国家奖学金。",
        "校内职务": "担任校团委副书记。",
        "资格证书": "获得过全国大学生数学建模竞赛一等奖。",
        "个人作品": "个人作品：一个基于Python的Web应用开发，一个基于React的移动端应用开发，一个基于Java的微服务架构设计。"
    }
]
# 构建提示词
system_prompt = """你是一个简历生成助手。我会给你两个示例简历数据，请你参考这些示例的格式（但不要完全照搬内容），生成一份全新的、合理的简历数据。

生成的数据要求：
1. 保持与示例相同的JSON格式
2. 数据要合理真实，简历的对象是2025届的大四应届毕业生
3. 每次生成的数据都必须完全不同，特别注意：
   - 姓名：随机生成不同的中文姓名（使用不同的姓和名）
   - 性别：随机选择（男/女）
   - 年龄：在21-23之间随机
   - 电话号码：随机生成（符合中国手机号规则：1开头的11位数字）
   - 邮箱：随机生成（使用qq.com, 163.com, gmail.com, outlook.com等，要与生成的姓名相关）
   - 籍贯：随机选择不同的中国省市（要包括省和市）

4. 专业背景（注意与职位匹配）：
   - 计算机类：计算机科学、软件工程、人工智能、数据科学等
   - 理工类：自动化、电子信息、机械工程、材料科学、物理学等
   - 商科类：金融学、会计学、市场营销、国际贸易等
   - 理学类：数学、化学、生物科学等
   - 医学类：临床医学、药学、护理学等
   - 人文社科：法学、心理学、新闻传播等

5. 职位要与专业精确匹配，例如：
   - 计算机类：后端开发、前端开发、算法工程师、全栈工程师、测试开发等
   - 理工类：自动化工程师、电子工程师、机械设计师、材料工程师等
   - 商科类：数据分析师、财务分析师、市场营销专员、运营专员等
   - 理学类：研发工程师、实验员、教育培训等
   - 医学类：医生助理、药剂师、临床研究员等
   - 人文社科：律师助理、人力资源、新媒体运营等

6. 技能要与专业和职位精确匹配，例如：
   - 开发岗位：编程语言、框架、工具等具体技能
   - 算法岗位：机器学习算法、深度学习框架等
   - 设计岗位：设计软件、设计规范等
   - 运营岗位：运营工具、数据分析能力等

7. 工作经历、项目经历要具体且与专业职位相关
8. 校内荣誉和职务要多样化
9. 资格证书要与专业相关
10. 个人作品要具体且与专业相关

11. 薪资范围要合理：
    - 实习岗位：2k-8k
    - 校招岗位：8k-25k

12. 返回格式必须是可以直接解析的JSON格式"""

# 生成数据
generated_data = []

for i in range(3):
    try:
        prompt = f"这是第{i+1}条数据的生成请求。请参考以下两个示例，生成一份新的简历数据：\n{json.dumps(few_shot_examples, ensure_ascii=False, indent=2)}"
        
        response = client.chat.completions.create(
            model="deepseek-chat",
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": prompt}
            ],
            temperature=0.8,
            stream=False
        )
        
        # 添加这些行来打印原始响应
        print("\nAPI响应内容：")
        print(response.choices[0].message.content)
        print("\n" + "="*50 + "\n")
        
        # 处理返回内容，移除markdown格式
        content = response.choices[0].message.content
        if content.startswith("```json"):
            content = content[7:]  # 移除开头的 ```json
        if content.endswith("```"):
            content = content[:-3]  # 移除结尾的 ```
        
        # 解析生成的JSON数据
        response_json = json.loads(content.strip())
        # 如果返回的是数组，取第一个元素
        if isinstance(response_json, list):
            generated_json = response_json[0]
        else:
            generated_json = response_json
            
        generated_data.append(generated_json)
        
        print(f"已生成第 {i+1} 条数据")
        
        time.sleep(1)
        
    except Exception as e:
        print(f"生成第 {i+1} 条数据时出错: {str(e)}")
        print("错误详情：", e.__class__.__name__)
        print("错误内容：", content if 'content' in locals() else "无内容")
        continue

# 保存生成的数据
try:
    with open("generated_resumes.json", "w", encoding="utf-8") as f:
        json.dump(generated_data, f, ensure_ascii=False, indent=2)
    print("所有数据已成功保存到 generated_resumes.json")
except Exception as e:
    print(f"保存文件时出错: {str(e)}")